.org 0x803D51D4
	LW		A1, 0x0034(S6)		;T8 = Address
	ADDU	A1, A1, S1			;A1 = Address+Offset
	LUI		T0, 0x8000			;T0 = 0x80000000
	OR		A1, A1, T0			;A1 = Address+Offset OR 0x80000000
	LBU		A1, 0x0000(A1)		;A1 = Byte
	ANDI	T0, A1, 0x000F		;T0 = A1&0x0F
	SH		T0, 0x00DE(SP)		;0x00DE(SP) 
	ANDI	A1, A1, 0x00F0		;A1 = A1&0xF0
	BEQ		R0, R0, 0x803D5280	;
	SRL		A1, A1, 0x0004		;A1 = (A1&0xF0)>>4

.org 0x803D5280
	LW		A0, 0x00F0(SP)
	OR		A2, S2, R0
	OR		A3, S4, R0
;803D528C

.org 0x803D529C
	ADDIU	A2, S2, 0x0008		;Decrease distance between connected digits

.org 0x803D52C4
	SLTI	AT, S3, 0x0010		;Increase it to 16 bytes per row
	
.org 0x803D52E8
	SLTI	AT, S5, 0x0005		;Increase to 5 rows

.org 0x803D52B8
	ADDIU	S2, S2, 0x0012		;Decrease distance between bytes
	
.org 0x803D51D0
	ADDIU	S2, R0, 0x0010		;Decrease start X offset
	
.org 0x803D4934
	ADDIU	A1, R0, 0x0004		;Ammunition X Position
	JAL		0x800FB41C
	ADDIU	A2, R0, 0x0003		;Ammunition Y Position
	
.org 0x803D48E4
	ADDIU	A1, R0, 0x001A		;Hearts X Position
	JAL		0x800FB41C
	ADDIU	A2, R0, 0x0002		;Hearts Y Position
	
.org 0x803D50B4
	SLTI	AT, S5, 0x0006		;Set rupee length to 8
	
.org 0x803D50C8
	ADDIU	A2, R0, 0x00B2		;Move hearts
	
.org 0x803D5130
	ADDIU	A2, R0, 0x00B2		;Move hearts

.org 0x803D495C
	ADDIU	A1, R0, 0x0006		;Keys X Position
	JAL		0x800FB41C
	ADDIU	A2, R0, 0x000E		;Keys Y Position
	
.org 0x803D5358
	ADDIU	A3, R0, 0x0072		;Keys Digit Y Position
	
.org 0x803D58F0
	LW		T5, 0x0034(S6)
.org 0x803D58FC
	SW		T4, 0x0034(S6)		;Store rupees as word instead of half
	LW		T7, 0x0034(S6)
.org 0x803D5910
	SW		R0, 0x0034(S6)		;
.org 0X803D5924
	LW		T6, 0x0034(S6)
.org 0x803D5934
	SW		T1, 0x0034(S6)
	LW		T9, 0x0034(S6)
.org 0x803D594C
	SW		T2, 0x0034(S6)
.org 0x803D595C
	LW		T5, 0x0034(S6)
.org 0x803D5968
	SW		T4, 0x0034(S6)
	SW		T4, 0x0034(S6)
	LW		T7, 0x0034(S6)
.org 0x803D597C
	SW		R0, 0x0034(S6)
.org 0x803D598C
	LW		T6, 0x0034(S6)
.org 0x803D5998
	SW		T1, 0x0034(S6)
	Lw		T9, 0x0034(S6)
.org 0x803D59AC
	SW		T2, 0x0034(S6)
	
.org 0x803D58F8
	ADDIU	T4, T5, 0xF000		;Decrease by thousand
	
.org 0x803D5930
	ADDIU	T1, T6, 0x1000		;Increase by thousand
	
.org 0x803D5940
	BEQ		R0, R0, 0x803D59B0	;No limit
	
.org 0x803D5994
	ADDIU	T1, T6, 0x0050		;Increase by 50
	
.org 0x803D59A4
	BEQ		R0, R0, 0x803D59B0	;No limit

.org 0x803D4FD4
	LW		A1, 0x0034(S6)		;Load word instead of half for rupee digits
	SRL		T0, A1, 0x0014		;shift 20 steps to the right
	ANDI	T0, T0, 0x000F		;T0 = 6th bit shifted
	SB		T0, 0x00D8(SP)		;0x00D8(SP) = 6th bit.
	SRL		T0, A1, 0x0010		;shift 16 steps to the right
	ANDI	T0, T0, 0x000F		;T0 = 5th bit shifted
	SB		T0, 0x00D9(SP)		;0x00D9(SP) = 5th bit.
	SRL		T0, A1, 0x000C		;shift 12 steps to the right
	ANDI	T0, T0, 0x000F		;T0 = 4th bit shifted
	SB		T0, 0x00DA(SP)		;0x00DA(SP) = 4th bit.
	SRL		T0, A1, 0x0008		;shift 8 steps to the right
	ANDI	T0, T0, 0x000F		;T0 = 3rd bit shifted
	SB		T0, 0x00DB(SP)		;0x00DB(SP) = 3rd bit.
	SRL		T0, A1, 0x0004		;shift 4 steps to the right
	ANDI	T0, T0, 0x000F		;T0 = 2nd bit shifted
	SB		T0, 0x00DC(SP)		;0x00DC(SP) = 2nd bit.
	ANDI	T0, A1, 0x000F		;T0 = 1st bit
	SB		T0, 0x00DD(SP)		;0x00DD(SP) = 1st bit.
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	
.org 0x803D5088
	ADDU	T2, S0, S5
	LB		A1, 0x0000(T2)
	
;803D4BD0 texture offset

;8015E660